package controller.os;

import java.util.Collection;

import javax.ejb.EJB;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

import model.Cliente;
import controller.util.UtilTela;
import dao.ClienteDAOLocal;
import dao.ItemNaoEncontradoException;
import dao.OrdemServicoDAOLocal;

/**
 * @author Mauricio Sennos
 */
public class AbreOsController {

	
	@EJB
	private ClienteDAOLocal clienteDAOLocal;
	
	@EJB
	private OrdemServicoDAOLocal ordemServicoDAOLocal;
	
	private SelectItem[] selItemServico = {
			new SelectItem('T', "Instalacao de Telefone"),
			new SelectItem('B', "Instalacao de banda larga"),
			new SelectItem('C', "Instalacao de TV a cabo") };

	private String descrProblema;
	private String telefone;
	private String ddd;
	private Character tipoServicoSel;
	private String obs;
	private String periodoSel;
	private String nome;
	private String endereco;
	private Integer idCliente;
	
	public void capturaTelefone(ValueChangeEvent vce) {
		if (vce.getNewValue() != null && vce.getNewValue().toString().trim() != "") {
			telefone = vce.getNewValue().toString();
		}
	}
	
	public void recuperaCliente(ActionEvent ae) {
		Collection<Cliente> clientes;
		try {
			clientes = clienteDAOLocal.findClientesByTel(telefone,ddd );
			Cliente c = clientes.iterator().next();
			endereco = c.getEndereco();
			nome = c.getNome();
			idCliente = c.getId();
		} catch (ItemNaoEncontradoException e) {
			UtilTela.getRequest().setAttribute("msgNaoEnc", "Cliente não encontrado. Por gentileza, digite o código novamente.");
		}
	}
	
	public void gravar(ActionEvent ae) {
		
		long numOs = ordemServicoDAOLocal.grava(descrProblema, idCliente, tipoServicoSel);
		UtilTela.getSession().removeAttribute("abreOsController");
		UtilTela.getRequest().setAttribute("mensagemSistema", "Ordem de Serviço gravada e o número é:" + numOs);
	}
	
	public void selecionaCliente(ActionEvent ae) {
		Cliente cli = (Cliente)UtilTela.getRequestAttribute("item");
		this.ddd = cli.getDdd();
		this.telefone = cli.getTelefone();
		this.endereco = cli.getEndereco();
	}
	
	

	public String getDdd() {
		return ddd;
	}

	public String getEndereco() {
		return endereco;
	}

	public String getNome() {
		return nome;
	}

	public String getObs() {
		return obs;
	}

	public String getPeriodoSel() {
		return periodoSel;
	}

	public SelectItem[] getSelItemServico() {
		return selItemServico;
	}

	public String getTelefone() {
		return telefone;
	}

	public Character getTipoServicoSel() {
		return tipoServicoSel;
	}

	public void setDdd(String ddd) {
		this.ddd = ddd;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public void setObs(String obs) {
		this.obs = obs;
	}

	public void setPeriodoSel(String periodoSel) {
		this.periodoSel = periodoSel;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public void setTipoServicoSel(Character tipoServicoSel) {
		this.tipoServicoSel = tipoServicoSel;
	}

	public String getDescrProblema() {
		return descrProblema;
	}

	public void setDescrProblema(String descrProblema) {
		this.descrProblema = descrProblema;
	}

}
